home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks96 / RoasterJavaWAHTTPCGI.sit / Roaster-Java-WA-HTTP-CGI hack / JavaWebStuff / JavaRuntime.c < prev    next >
Text File  |  1996-06-22  |  4KB  |  165 lines

  1. /*************************************************************************************
  2.     
  3. *************************************************************************************/
  4.  
  5. #include "JavaRuntime.h"
  6. #include "Messages.h"
  7. #include <string.h>
  8.  
  9. static     JavaRuntime            sRuntime = nil;
  10. extern long gRunning;
  11.  
  12. /*************************************************************************************
  13.     
  14. *************************************************************************************/
  15.  
  16. JavaStatus
  17. RoasterIDE_registerNativeMethods(JavaRuntime runtime);
  18.  
  19. /*************************************************************************************
  20.     
  21. *************************************************************************************/
  22.  
  23. static JavaStatus
  24. wacgi_Done(JavaEnv env)
  25. {
  26.     JavaRef         this = JavaEnv_popRef(env);
  27.     
  28.     gRunning = 0;
  29.     return JavaStatusOk;
  30. }
  31.  
  32. static JavaStatus
  33. wacgi_SendRequest(JavaEnv env)
  34. {
  35.     JavaRef         this = JavaEnv_popRef(env);
  36.     JavaRef            requestString = JavaEnv_popRef(env);
  37.     JavaStatus        js;
  38.     size_t            len;
  39.     JavaChar        *unichars;
  40.     char            *s;
  41.     int                i;
  42.  
  43.     js = JavaString_length(env, requestString, &len);
  44.     
  45.     unichars = (JavaChar *) NewPtr(len * 2);
  46.     
  47.     if (unichars)
  48.     {
  49.         js = JavaString_getChars(env, requestString, 0, -1, unichars);
  50.         
  51.         s = (char *) unichars;
  52.         for (i = 0; i < len; i++)
  53.         {
  54.             s[i] = unichars[i];
  55.             s[i+1] = 0;
  56.         }
  57.         
  58.         printf("Sending request [%s]\n", s);
  59.         
  60.         MsgToQ(CGIQ, s, len+1);
  61.         
  62.         DisposePtr((Ptr) unichars);
  63.     }
  64.     
  65.     return JavaStatusOk;
  66. }
  67.  
  68. static JavaStatus
  69. wacgi_GetResponse(JavaEnv env)
  70. {
  71.     JavaRef         this = JavaEnv_popRef(env);
  72.     JavaRef            theString;
  73.     char *response;
  74.     
  75.     response = MsgFromQ(CGIQ);
  76.     
  77.     if (response)
  78.     {
  79.         JavaString_makeUTF(env, &theString, response, strlen(response));
  80.         JavaEnv_pushRef(env, theString);
  81.         DisposePtr(response);
  82.     }
  83.     else
  84.     {
  85.         JavaEnv_pushRef(env, JavaNull);
  86.     }
  87.     
  88.     return JavaStatusOk;
  89. }
  90.  
  91. static JavaStatus
  92. java_lang_Runtime_exitInternal_stub(JavaEnv env)
  93. {
  94.         JavaInt         exitCode = JavaEnv_popInt(env);
  95.         JavaRef         this = JavaEnv_popRef(env);
  96.  
  97.         return JavaStatusOk;
  98. }
  99.  
  100. /*************************************************************************************
  101.     
  102. *************************************************************************************/
  103.  
  104. JavaStatus
  105. RoasterIDE_registerNativeMethods(JavaRuntime runtime)
  106. {
  107.         JavaStatus      err;
  108.         JavaNativeTable         methodTable[] = {
  109.                 { "java/lang/Runtime", "exitInternal", "(I)V",
  110.                         java_lang_Runtime_exitInternal_stub, NULL, JavaAccessMember },
  111.                  {"wa/http/WACGI", "SendRequest", "(Ljava/lang/String;)V", 
  112.                          wacgi_SendRequest, NULL, JavaAccessMember},
  113.                  {"wa/http/WACGI", "GetResponse", "()Ljava/lang/String;", 
  114.                          wacgi_GetResponse, NULL, JavaAccessMember},
  115.                  {"wa/http/WACGI", "Done", "()V", 
  116.                          wacgi_Done, NULL, JavaAccessMember},
  117.                 { NULL }
  118.         };
  119.         err = JavaRuntime_registerNativeMethodTable(runtime, methodTable);
  120.         return err;
  121. }
  122.  
  123. /*************************************************************************************
  124.     
  125. *************************************************************************************/
  126.  
  127. OSErr InitalizeJavaRuntime(void)
  128. {
  129.     JavaRuntimeInitargs    initArgs;
  130.     JavaStatus            err;
  131.  
  132.     JavaRuntime_makeDefaultInitArgs(&initArgs);
  133.     err = JavaRuntime_make(&initArgs, &sRuntime);
  134.     if (err != JavaStatusOk)
  135.     {
  136.         //should we do something else?
  137.         return err;
  138.     }
  139.     err = RoasterIDE_registerNativeMethods(sRuntime);
  140.     return noErr;
  141. }
  142.  
  143. /*************************************************************************************
  144.     
  145. *************************************************************************************/
  146.  
  147. JavaRuntime    GetJavaRuntime(void)
  148. {
  149.     if(sRuntime == nil) {
  150.         InitalizeJavaRuntime();
  151.     }
  152.     return sRuntime;
  153. }
  154.  
  155. /*************************************************************************************
  156.     
  157. *************************************************************************************/
  158.  
  159. void DisposeJavaRuntime(void)
  160. {
  161.     if(sRuntime) {
  162.         JavaRuntime_dispose(sRuntime);
  163.     }
  164.     sRuntime = nil;
  165. }